home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / misc / emu / msh-156.lha / util / inhibit.c < prev    next >
C/C++ Source or Header  |  1996-12-22  |  2KB  |  97 lines

  1. /*-
  2.  * $Id: inhibit.c,v 1.56 1996/12/22 00:22:33 Rhialto Rel $
  3.  *
  4.  *  INHIBIT.C
  5.  *
  6.  *  This code is (C) Copyright 1989-1995 by Olaf Seibert. All rights reserved.
  7.  *  May not be used or copied without a licence.
  8. -*/
  9.  
  10. #include <stdio.h>
  11. #include <string.h>
  12.  
  13. #ifndef EXEC_TYPES_H
  14. #include <exec/types.h>
  15. #endif
  16. #ifndef EXEC_MEMORY_H
  17. #include <exec/memory.h>
  18. #endif
  19. #ifndef LIBRARIES_DOSEXTENS_H
  20. #include <libraries/dosextens.h>
  21. #endif
  22.  
  23. #ifndef CLIB_EXEC_PROTOS_H
  24. #include <clib/exec_protos.h>
  25. #endif
  26. #ifndef CLIB_ALIB_PROTOS_H
  27. #include <clib/alib_protos.h>
  28. #endif
  29. #ifndef CLIB_DOS_PROTOS_H
  30. #include <clib/dos_protos.h>
  31. #endif
  32.  
  33. const char    idString[] = "$\VER: Inhibit $Revision: 1.56 $ $Date: 1996/12/22 00:22:33 $\r\n";
  34.  
  35. long
  36. dos_packet1(struct MsgPort *port, long type, long arg1)
  37. {
  38.     struct StandardPacket *sp;
  39.     struct MsgPort *rp;
  40.     long res1;
  41.  
  42.     if ((rp = CreatePort(NULL, 0)) == NULL)
  43.     return DOSFALSE;
  44.     if ((sp = AllocMem((long)sizeof(*sp), MEMF_PUBLIC|MEMF_CLEAR)) == NULL) {
  45.     DeletePort(rp);
  46.     return DOSFALSE;
  47.     }
  48.     sp->sp_Msg.mn_Node.ln_Name = (char *)&sp->sp_Pkt;
  49.     sp->sp_Pkt.dp_Link = &sp->sp_Msg;
  50.     sp->sp_Pkt.dp_Port = rp;
  51.     sp->sp_Pkt.dp_Type = type;
  52.     sp->sp_Pkt.dp_Arg1 = arg1;
  53.     PutMsg(port, &sp->sp_Msg);
  54.     WaitPort(rp);
  55.     GetMsg(rp);
  56.     res1 = sp->sp_Pkt.dp_Res1;
  57.     FreeMem(sp, (long)sizeof(*sp));
  58.     DeletePort(rp);
  59.     return res1;
  60. }
  61.  
  62. int
  63. main(int argc, char **argv)
  64. {
  65.     struct MsgPort *filehandler;
  66.     long        onoff = DOSTRUE;
  67.     int            rc = 0;
  68.  
  69.     if (argc == 3 && stricmp(argv[1], "on") == 0) {
  70.     onoff = DOSTRUE;
  71.     argc--;
  72.     argv++;
  73.     }
  74.     if (argc == 3 && stricmp(argv[1], "off") == 0) {
  75.     onoff = DOSFALSE;
  76.     argc--;
  77.     argv++;
  78.     }
  79.     if (argc == 2) {
  80.     if (strchr(argv[1], ':') &&
  81.         (filehandler = DeviceProc(argv[1]))) {
  82.         onoff = dos_packet1(filehandler, ACTION_INHIBIT, onoff);
  83.         if (!onoff) {
  84.         puts("Failed.");
  85.         rc = 5;
  86.         }
  87.     } else {
  88.         puts("Incorrect device.");
  89.         rc = 10;
  90.     }
  91.     } else {
  92.     puts("Usage: Inhibit [on|off] DEV:");
  93.     }
  94.  
  95.     return rc;
  96. }
  97.